package br.com.gaspar.batepapo.mb;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

import br.com.gaspar.batepapo.modelo.BatePapo;
import br.com.gaspar.batepapo.modelo.Mensagem;
import br.com.gaspar.batepapo.modelo.Usuario;

@ManagedBean(name="AtendenteMB")
@SessionScoped
public class AtendenteMB implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@ManagedProperty(value="#{BatePapoMB}")
	private BatePapoMB batePapoMB;
	
	private Usuario atendente = new Usuario();
	
	private Boolean autenticado;
	
	public void login(){
		getBatePapoMB().getBo().registrarAtendente(getAtendente());
		setAutenticado(true);
	}
	
	public void logout(){
		getBatePapoMB().getBo().removerAtendente(getAtendente());
		setAtendente(new Usuario());
		setAutenticado(false);
	}
	
	public void iniciarBatePapo(){
		Usuario usuario = getBatePapoMB().getBo().proximoUsuario();
		String codigo = usuario.getEmail();
		getBatePapoMB().getBo().criarSala(codigo);
		if(getBatePapoMB().getBatePapo() == null){
			getBatePapoMB().setBatePapo(new BatePapo());
		}
		getBatePapoMB().getBatePapo().setCodigo(codigo);
		if(getBatePapoMB().getMensagem() == null){
			getBatePapoMB().setMensagem(new Mensagem());
		}
		getBatePapoMB().getMensagem().setUsuario(usuario);
	}
	
	public Integer getUsuariosEspera(){
		return getBatePapoMB().getBo().getFilaEsperaUsuarios().size();
	}

	public BatePapoMB getBatePapoMB() {
		return batePapoMB;
	}

	public void setBatePapoMB(BatePapoMB batePapoMB) {
		this.batePapoMB = batePapoMB;
	}

	public Boolean getAutenticado() {
		return autenticado;
	}

	public void setAutenticado(Boolean autenticado) {
		this.autenticado = autenticado;
	}

	public Usuario getAtendente() {
		return atendente;
	}

	public void setAtendente(Usuario atendente) {
		this.atendente = atendente;
	}

}
